/**
 * 服务入口文件
 * @version 1.0.0
 * @author 技术支持团队
 * 启动命令：node src/index.js
 */
const express = require('express');
const app = express();

// 导入模块
const setupSwagger = require('./utils/swagger');
const generateDirectoryTree = require('./utils/directoryTree');
const videoRoutes = require('./routes/videoRoutes');
const { setupBaseMiddlewares, setupErrorHandlers } = require('./middlewares/middlewares');

// 初始化中间件
setupBaseMiddlewares(app);
setupErrorHandlers(app);

// 路由配置
app.use('/api', videoRoutes);

// 设置 Swagger 文档
setupSwagger(app);

// 启动服务器
const PORT = process.env.PORT || 3000;

console.log('🚀 主程序启动中...');
console.log('Express 应用已创建');
console.log('所有路由已注册');

// 在 app.listen 之前调用
console.log('🌳 正在生成项目目录结构...');
generateDirectoryTree()
    .then(() => {
        console.log('🌳 目录结构生成完成');
    })
    .catch((err) => {
        console.warn('⚠️ 目录结构生成过程中出现错误:', err);
    });

// 在应用启动时创建日志目录
const fs = require('fs');
const path = require('path');

const logDir = path.join(__dirname, 'logs');
if (!fs.existsSync(logDir)) {
  fs.mkdirSync(logDir);
}

app.listen(PORT, () => {
    console.log(`🚀 服务器正在运行于 http://localhost:${PORT}`);
});
